The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
In many application systems, data may be generated and transitioned through a sequence of events which represent various activities that take place in these systems. Such events typically have a natural ordering based on wall-clock time. Although a sequence of events may be a convenient logical abstraction for the activities that it represents, many application systems may not physically store and query event-generated data as sequences because most of the transactions and queries in these application systems are based on currently processed data. Thus, it may be burdensome to develop such application systems to manage a trail of events that tracks activity based on wall-clock time. However, in some types of application systems it may be useful to model, physically store, and query the event-generated data as sequences in order to provide the ability to evaluate the impact of events that are generated at different points in time.
According to one approach for processing sequences of events that are generated at different points in time, users interested in such time-correlated events need to write complex Structured Query Language (SQL) queries against time-stamped event-generated data that may be stored in different tables of different databases and/or data warehouses. One disadvantage of this approach is that complex SQL queries are expensive to execute because they tend to use a lot of computing resources (e.g., memory and CPU cycles) especially when such queries need to be run against data generated by a large number of events. Another disadvantage of this approach is that such SQL queries tend to be very complex and thus beyond the ability of most users that typically need the results of these queries.
According to another approach for processing sequences of events that are generated at different points in time, application developers include custom code in the application systems, where the custom code provides for storing the data generated by the events of interest and for querying the event-generated data. One disadvantage of this approach is that developing such custom code is burdensome because it may require a lot of development time and intricate testing even though the custom code may not be required by the core functionality of the application systems in which it is included. Another disadvantage of this approach is that it does not provide flexibility with respect to the events that need to be monitored and the queries that need to be run based on the monitored events. For example, in order to add the monitoring of a new event or to add a new query against event-generated data, this approach may require the custom code (and/or the entire application) to be modified, re-compiled, tested, and re-installed.
Based on the foregoing, techniques are clearly needed for efficiently processing sequences of events that may occur at different points in time.